home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / ber / stream / BERReal.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  1.5 KB  |  116 lines

  1. package netscape.ldap.ber.stream;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6.  
  7. public class BERReal extends BERElement {
  8.    public static final float PLUS_INFINITY = Float.POSITIVE_INFINITY;
  9.    public static final float MINUS_INFINITY = Float.NEGATIVE_INFINITY;
  10.    private float m_value;
  11.  
  12.    public BERReal(float var1) {
  13.       this.m_value = var1;
  14.    }
  15.  
  16.    public BERReal(InputStream var1, int[] var2) throws IOException {
  17.       int var3 = BERElement.readLengthOctets(var1, var2);
  18.       if (var3 == 0) {
  19.          this.m_value = 0.0F;
  20.       } else {
  21.          int var4 = var1.read();
  22.          int var10002 = var2[0]++;
  23.          if (var4 == 64) {
  24.             this.m_value = Float.POSITIVE_INFINITY;
  25.          } else if (var4 == 65) {
  26.             this.m_value = Float.NEGATIVE_INFINITY;
  27.          } else if ((var4 & 128) > 0) {
  28.             byte var5;
  29.             if ((var4 & 64) > 0) {
  30.                var5 = -1;
  31.             } else {
  32.                var5 = 1;
  33.             }
  34.  
  35.             byte var6;
  36.             if ((var4 & 32) > 0) {
  37.                if ((var4 & 16) > 0) {
  38.                   var6 = 0;
  39.                } else {
  40.                   var6 = 16;
  41.                }
  42.             } else if ((var4 & 16) > 0) {
  43.                var6 = 8;
  44.             } else {
  45.                var6 = 2;
  46.             }
  47.  
  48.             byte var8;
  49.             if ((var4 & 8) > 0) {
  50.                if ((var4 & 4) > 0) {
  51.                   var8 = 3;
  52.                } else {
  53.                   var8 = 2;
  54.                }
  55.             } else if ((var4 & 4) > 0) {
  56.                var8 = 1;
  57.             } else {
  58.                var8 = 0;
  59.             }
  60.  
  61.             int var9;
  62.             int var11;
  63.             if ((var4 & 2) > 0) {
  64.                if ((var4 & 1) > 0) {
  65.                   var11 = var1.read();
  66.                   var10002 = var2[0]++;
  67.                   var9 = ((BERElement)this).readTwosComplement(var1, var2, var11);
  68.                } else {
  69.                   var11 = 3;
  70.                   var9 = ((BERElement)this).readTwosComplement(var1, var2, var11);
  71.                }
  72.             } else if ((var4 & 1) > 0) {
  73.                var11 = 2;
  74.                var9 = ((BERElement)this).readTwosComplement(var1, var2, var11);
  75.             } else {
  76.                var11 = 1;
  77.                var9 = ((BERElement)this).readTwosComplement(var1, var2, var11);
  78.             }
  79.  
  80.             int var12 = var3 - 1 - var11;
  81.             int var7 = ((BERElement)this).readUnsignedBinary(var1, var2, var12);
  82.             int var10 = var5 * var7 * 2 * var8;
  83.             this.m_value = (float)var10 * (float)Math.pow((double)var6, (double)var9);
  84.          } else {
  85.             throw new IOException("real ISO6093 not supported. ");
  86.          }
  87.       }
  88.    }
  89.  
  90.    public void write(OutputStream var1) throws IOException {
  91.       if (this.m_value == 0.0F) {
  92.          var1.write(9);
  93.          var1.write(0);
  94.       } else if (this.m_value == Float.POSITIVE_INFINITY) {
  95.          var1.write(9);
  96.          var1.write(1);
  97.          var1.write(64);
  98.       } else {
  99.          if (this.m_value == Float.NEGATIVE_INFINITY) {
  100.             var1.write(9);
  101.             var1.write(1);
  102.             var1.write(65);
  103.          }
  104.  
  105.       }
  106.    }
  107.  
  108.    public int getType() {
  109.       return 9;
  110.    }
  111.  
  112.    public String toString() {
  113.       return "Real {" + this.m_value + "}";
  114.    }
  115. }
  116.